﻿#include <iostream>

#include <amo/uid.hpp>

#include <gtest/gtest.h>


TEST(uid, constructor) {
    amo::uid uid1;
    amo::uid uid2(uid1);
    amo::uid uid3((int64_t)uid2);
    amo::uid uid4 = amo::uid::generate_uid();
    ASSERT_EQ((int64_t)uid1, (int64_t)uid2);
    ASSERT_EQ((int64_t)uid3, (int64_t)uid2);
    ASSERT_NE((int64_t)uid3, (int64_t)uid4);
}

TEST(uid, nil) {
    ASSERT_EQ((int64_t)amo::uid::nil(), (int64_t)0);
}

TEST(uid, to_string) {
    amo::uid uid1;
    amo::uid uid2(uid1);
    amo::uid uid3;
    std::cout << uid1.to_string() << std::endl;
    ASSERT_EQ(uid1.to_string(), uid2.to_string());
    ASSERT_NE(uid1.to_string(), uid3.to_string());
}